babl: add babl_space_get_icc
authorØyvind Kolås <pippin@gimp.org>
Wed, 11 Jul 2018 18:35:40 +0000 (20:35 +0200)
committerØyvind Kolås <pippin@gimp.org>
Wed, 11 Jul 2018 18:35:40 +0000 (20:35 +0200)
babl/babl-icc.c
babl/babl-space.h
babl/babl.h
export-symbols

index 9d520b976fce9e16cfacdbc8d03e338dc0b3ff23..1a445e55797bb4c294ee76bcbfaacbbdc0494b7e 100644 (file)
@@ -616,6 +616,20 @@ char *babl_space_to_icc (const Babl  *babl,
   }
 }
 
+const char *babl_space_get_icc (const Babl *babl, int *length)
+{
+  if (!babl->space.icc_profile)
+  {
+    /* overriding constness of babl */
+    Babl *babl_noconst = (void*) babl;
+    babl_noconst->space.icc_profile = babl_space_to_icc (babl,
+                              "babl profile", NULL, 0,
+                              &babl_noconst->space.icc_length);
+  }
+  *length = babl->space.icc_length;
+  return babl->space.icc_profile;
+}
+
 
 typedef uint32_t UTF32;
 typedef uint16_t UTF16;
@@ -851,6 +865,9 @@ babl_icc_make_space (const char   *icc_data,
                 trc_red, trc_green, trc_blue);
 
        babl_free (state);
+       ret->space.icc_length = icc_length;
+       ret->space.icc_profile = malloc (icc_length);
+       memcpy (ret->space.icc_profile, icc_data, icc_length);
        return ret;
      }
   }
@@ -897,6 +914,11 @@ babl_icc_make_space (const char   *icc_data,
                      green_x, green_y,
                      blue_x, blue_y,
                      trc_red, trc_green, trc_blue, 1);
+
+       ret->space.icc_length = icc_length;
+       ret->space.icc_profile = malloc (icc_length);
+       memcpy (ret->space.icc_profile, icc_data, icc_length);
+
        return ret;
      }
   }
index 488fcd002dee195bbf5042b5360216bcec99758f..119c686e54a3258c3c78de21c455252b0b2412d7 100644 (file)
@@ -61,6 +61,8 @@ typedef struct
    * making it possible to round-trip data. Unless it is sRGB, when
    * standard should win.
    */
+  char *icc_profile;
+  int   icc_length;
 
 } BablSpace;
 
index 405a06e0c04f522636cdae0a89f40b1c5d9a96ff..164533b6093c4ed03c811c5ad33938b81ef9492e 100644 (file)
@@ -525,6 +525,7 @@ void babl_space_get (const Babl *space,
                      const Babl **green_trc,
                      const Babl **blue_trc);
 
+const char *babl_space_get_icc (const Babl *babl, int *length);
 
 #ifdef __cplusplus
 }
index df63f41f42da3dbb62c2c8ec7e4684dedbc2fbb9..2b96e83c5b5ccbde8738739ce268309470dbe657 100644 (file)
@@ -43,6 +43,7 @@ babl_set_user_data
 babl_space
 babl_space_from_xyz
 babl_space_to_icc
+babl_space_get_icc
 babl_chromaticities_make_space
 babl_space_get
 babl_space_get_rgbtoxyz